package cn.b.sky.mes.hr.service;

import java.util.List;
import java.util.Map;

import cn.b.sky.mes.hr.model.Performance;
import cn.b.sky.mes.hr.model.condition.PerformanceCondition;

public interface PerformanceService {

  /**
   * 
   * <strong>Title : getPerformancesByCondition<br></strong>
   * <strong>Description : </strong>分页查询生产绩效，非报表<br> 
   * <strong>Create on : 2016-4-1 下午2:07:59<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Performance>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br> 
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Performance> getPerformancesByCondition(PerformanceCondition condition);

  /**
   * 
   * <strong>Title : getPerformancesByCondition<br></strong>
   * <strong>Description : </strong>分页查询生产绩效条数，非报表<br> 
   * <strong>Create on : 2016-4-1 下午2:07:59<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Performance>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getPerformancesCountByCondition(PerformanceCondition condition);

  /**
   * 
   * <strong>Title : getPerformanceById<br></strong>
   * <strong>Description : </strong>获取详情<br> 
   * <strong>Create on : 2016-4-1 上午10:45:56<br></strong>
   * <p>
   * @param id
   * @param siteCode
   * @return
   * Performance
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Performance getPerformanceById(Long id, String siteCode);

  /**
   * 
   * <strong>Title : savePerformance<br></strong>
   * <strong>Description : </strong>保存<br> 
   * <strong>Create on : 2016-4-14 上午10:44:37<br></strong>
   * <p>
   * @param performance
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void savePerformance(Performance performance);

  /**
   * 
   * <strong>Title : modifyPerformance<br></strong>
   * <strong>Description : </strong>修改<br> 
   * <strong>Create on : 2016-4-14 上午10:44:44<br></strong>
   * <p>
   * @param performance
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void modifyPerformance(Performance performance);

  /**
   * 
   * <strong>Title : deletePerformanceById<br></strong>
   * <strong>Description : </strong>删除<br> 
   * <strong>Create on : 2016-4-14 上午10:44:55<br></strong>
   * <p>
   * @param id
   * @return
   * String
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String deletePerformanceById(Long id);

  void saveBatchPerformance(Performance performance);

  /**
   * 
   * <strong>Title : isExsitsPerformance<br></strong>
   * <strong>Description : </strong>判断同一人员是否存在相同时间段的数据<br> 
   * <strong>Create on : 2016-3-29 下午2:53:53<br></strong>
   * <p>
   * @param performance
   * @return
   * boolean
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  boolean isExsitsPerformance(Performance performance);

  /**
   * 
   * <strong>Title : getMinStartTimePerformance<br></strong>
   * <strong>Description : </strong>获取人员当天开始时间最小的绩效<br> 
   * <strong>Create on : 2016-3-31 上午9:51:06<br></strong>
   * <p>
   * @param performance
   * @return
   * Performance
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Performance getMinStartTimePerformance(Performance performance);

  /**
   * 
   * <strong>Title : getPerformanceBypersonnelAndTheDate<br></strong>
   * <strong>Description : </strong>获取人员当天绩效，按照开始时间升序<br> 
   * <strong>Create on : 2016-4-1 上午11:14:25<br></strong>
   * <p>
   * @param performance
   * @return
   * List<Performance>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Performance> getPerformanceBypersonnelAndTheDate(Performance performance);

  /**
   * 
   * <strong>Title : getPerformanceListByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询绩效数据列表,生产绩效统计报表使用<br> 
   * <strong>Create on : 2016-3-30 上午10:10:11<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Performance>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */

  List<Performance> getPerformanceListByCondition(PerformanceCondition condition);

  /**
   * 
   * <strong>Title : getPerformanceCountByCondition<br></strong>
   * <strong>Description : </strong>根据条件查询绩效数据条数，生产绩效统计报表使用<br> 
   * <strong>Create on : 2016-3-30 上午10:37:37<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getPerformanceCountByCondition(PerformanceCondition condition);

  /**
   * 
   * <strong>Title : selectAllPerformanceReportMapList<br></strong>
   * <strong>Description : </strong>查询绩效数据列表<br> 
   * <strong>Create on : 2016-3-31 下午2:18:55<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Map<String,Object>>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Map<String, Object>> selectAllPerformanceReportMapList(PerformanceCondition condition);

  /**
   * 
   * <strong>Title : getPerformanceBypersonnelAndPeriod<br></strong>
   * <strong>Description : </strong>查询指定人员指定时间范围内的绩效台账<br> 
   * <strong>Create on : 2016年4月22日 上午10:33:39<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Performance>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人    |    修改日期    |    修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Performance> getPerformanceBypersonnelAndPeriod(PerformanceCondition condition);

}
